package cn.i7baozh.consumer.config;

import cn.i7baozh.consumer.interceptor.TestRequestInterceptor;
import feign.Feign;
import feign.Logger;
import feign.Request;
import feign.hystrix.HystrixFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author : baoqi.zhang
 * @date :   2022/4/8 17:48
 */
@Configuration
public class ApplicationContextConfig {

    @Autowired
    private TestRequestInterceptor testRequestInterceptor;

    /**
     * 1. 只有声明了 Feign.Builder @FeignClient中的fallback 和 fallbackFactory才会生效
     * 不需要再yml文件中额外配置
     *
     * 2. 对于HystrixFeign来说，没看到哪里能配置连接和读的超时时间，
     * 因此推测，HystrixFeign的原理为使用默认的Feign超时时间，超过超时时间fallback 和 fallbackFactory才会生效
     *
     * 3. 如果使用HystrixFeign 则日志级别需要显式的设置
     * 同时配置 logging.level.[需要打印详细信息的接口]= debug  即可。
     *
     * @return
     */
//    @Bean
//    public Feign.Builder getFeignBuilder(){
//        HystrixFeign.Builder builder = HystrixFeign.builder();
//        builder.logLevel(Logger.Level.FULL);
//        builder.requestInterceptor(testRequestInterceptor);
//        builder.options(new Request.Options(5000,5000,false));
//        return builder;
//    }
}
